#!/bin/bash

# 检查是否提供了安装目录参数
if [ $# -ne 1 ]; then
    echo "使用方法: $0 <安装目录>"
    echo "示例: $0 /data/LN/LNclient"
    exit 1
fi

# 定义变量
INSTALL_DIR="$1"
TEMP_INSTALLER="LucaNet.SoftwareManager_Installer_2409+8.sh"
#INSTALLER_URL="https://cdn.lucanet.com/installer/$TEMP_INSTALLER"
INSTALLER_URL=$TEMP_INSTALLER

# 检查安装目录层级是否至少3层
check_directory_depth() {
    local dir="$1"
    local count=$(echo "$dir" | tr -cd '/' | wc -c)
    if [ $count -lt 3 ]; then
        echo "错误: 安装目录必须至少嵌套3层（例如 /a/b/c）"
        echo "提供的目录 '$dir' 只有 $count 层"
        return 1
    fi
    return 0
}

# 初始检查目录层级
if ! check_directory_depth "$INSTALL_DIR"; then
    exit 1
fi

# 处理目录存在逻辑（增加用户交互）
handle_directory() {
    local target_dir="$1"
    
    if [ -d "$target_dir" ]; then
        while true; do
            echo -e "\n检测到目录已存在: $target_dir"
            echo "请选择操作："
            echo "r. 更换安装目录"
            echo "n. 取消安装"
            echo "y. 确认删除已存在的目录并继续"
            read -p "请输入选项 (r/y/n): " choice

            case "$choice" in
                r)
                    # 更换安装目录
                    read -p "请输入新的安装目录: " new_dir
                    # 检查新目录层级
                    if ! check_directory_depth "$new_dir"; then
                        continue
                    fi
                    # 递归检查新目录是否存在
                    handle_directory "$new_dir"
                    # 更新全局安装目录变量
                    INSTALL_DIR="$new_dir"
                    return 0
                    ;;
                n)
                    # 取消安装
                    echo "用户选择取消安装，程序退出。"
                    exit 0
                    ;;
                y)
                    # 确认删除目录
                    echo "正在删除已存在的目录: $target_dir"
                    if  rm -rf "$target_dir"; then
                        echo "目录删除成功"
                        mkdir -p "$target_dir"
                        echo "已重新创建目录：$target_dir"
                        return 0
                    else
                        echo "错误: 无法删除目录 $target_dir"
                        exit 1
                    fi
                    ;;
                *)
                    echo "无效选项，请输入1、2或3"
                    ;;
            esac
        done
    else
        # 目录不存在，直接创建
        mkdir -p "$target_dir"
        echo "已自动创建目录：$target_dir"
        return 0
    fi
}

# 处理目录（存在则交互，不存在则创建）
handle_directory "$INSTALL_DIR"

# 如果临时安装脚本存在则先删除
if [ -f "$TEMP_INSTALLER" ]; then
    echo "删除已存在的临时安装脚本: $TEMP_INSTALLER"
    rm -f "$TEMP_INSTALLER"
fi

# 下载安装脚本（带进度条）
#echo "正在下载安装脚本..."
#if ! curl -#SL "$INSTALLER_URL" -o "$TEMP_INSTALLER"; then
#    echo "错误: 无法下载安装脚本"
#    rm -f "$TEMP_INSTALLER"  # 清理可能不完整的文件
#    exit 1
#fi

# 赋予执行权限
chmod +x "$TEMP_INSTALLER"

# 安装程序
echo "开始安装程序..."
sed -i "s#default_install_dir=\"/opt/LucaNet/Youniverse\"#default_install_dir=\"$INSTALL_DIR\"#" "$TEMP_INSTALLER"
sh $TEMP_INSTALLER


# 清理临时安装脚本
echo "清理临时文件..."
#rm -f "$TEMP_INSTALLER"

echo "安装过程已完成，安装目录: $INSTALL_DIR"
